---------------------------------------------------------------------
-- TECLADO PSP ------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
--
--
function teclado ( texto_entrante, numero_caracteres_maximo )
  Music.pause()
  local escribe = texto_entrante
  local LIMITE = numero_caracteres_maximo
  local negro_t = Color.new(0,0,0)
  local teclas     = Image.load("./teclado/teclado_psp.png")
  local minusculas = Image.load("./teclado/teclado_minusculas.png")
  local mayusculas = Image.load("./teclado/teclado_MAYUSCULAS.png")
  local numeros    = Image.load("./teclado/teclado_Numeros.png")
  local cur_tecla  = Image.load("./teclado/cursor_teclado.png")
  Music.resume()  
  local pad_t = Controls.read()
  local oldpad_t = pad_t
  local x_t = 216
  local y_t = 160
  local x_a = 0
  local y_a = 0 
  local vx = 46
  local vy = 69
  local bloq_mayus = 2
  local menu_teclado = true
  local n_marca = 0
  local marca  = ""
  local marca_linea = "-------------------------------------------------------------"
  while menu_teclado do
    pad_t = Controls.read()  
    x_a = 0
    y_a = 0 
    if pad_t:up()    and pad_t:up()    ~= oldpad_t:up()    then y_t = y_t - vy end
    if pad_t:down()  and pad_t:down()  ~= oldpad_t:down()  then y_t = y_t + vy end
    if pad_t:left()  and pad_t:left()  ~= oldpad_t:left()  then x_t = x_t - vx end
    if pad_t:right() and pad_t:right() ~= oldpad_t:right() then x_t = x_t + vx end   
    if pad_t:analogY() < -40 then 
       y_t = y_t - vy 
       screen.waitVblankStart(10)
    end
    if pad_t:analogY() > 40  then
       y_t = y_t + vy 
       screen.waitVblankStart(10)
    end
    if pad_t:analogX() < -40 then
       x_t = x_t - vx 
       screen.waitVblankStart(10)
    end
    if pad_t:analogX() > 40  then
       x_t = x_t + vx
       screen.waitVblankStart(10)
    end
    if x_t < 32  then x_t = 446 end
    if x_t > 446 then x_t = 32  end
    if y_t < 91  then y_t = 229 end
    if y_t > 229 then y_t = 91  end
    if pad_t:l() and pad_t:l() ~= oldpad_t:l() then 
       local quita = string.len(escribe) - 1
       escribe = string.sub(escribe,1,quita)
    end
    if pad_t:square() and pad_t:square() ~= oldpad_t:square() then 
       local quita = string.len(escribe) - 1
       escribe = string.sub(escribe,1,quita)     
    end
    if pad_t:r() and pad_t:r() ~= oldpad_t:r() then escribe = escribe .. " " end
    if pad_t:circle() and pad_t:circle() ~= oldpad_t:circle() then 
       escribe = escribe .. " "
    end
    if pad_t:triangle() and pad_t:triangle() ~= oldpad_t:triangle() then 
       bloq_mayus = bloq_mayus + 1
       if bloq_mayus == 4 then bloq_mayus = 1 end
    end
    if pad_t:cross()    and pad_t:cross()    ~= oldpad_t:cross()    then
       x_a = x_t
       y_a = y_t
    end
    oldpad_t = pad_t
  ------------------------------------------------------------------
  ------------------------------------------------------------------
  if x_a > 7 and x_a < 50 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "q" 
        elseif bloq_mayus == 2 then escribe = escribe .. "Q"
        else                        escribe = escribe .. "1" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "a" 
        elseif bloq_mayus == 2 then escribe = escribe .. "A"
        else                        escribe = escribe .. "!" end end
     if y_a > 197 and y_a < 264 then
        bloq_mayus = bloq_mayus + 1
        if bloq_mayus == 4 then bloq_mayus = 1 end end end
  if x_a > 54 and x_a < 98 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "w" 
        elseif bloq_mayus == 2 then escribe = escribe .. "W"
        else                        escribe = escribe .. "2" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "s" 
        elseif bloq_mayus == 2 then escribe = escribe .. "S"
        else                        escribe = escribe .. "?" end end
     if y_a > 197 and y_a < 264 then
        if     bloq_mayus == 1 then escribe = escribe .. "z" 
        elseif bloq_mayus == 2 then escribe = escribe .. "Z"
        else                        escribe = escribe .. "," end end end
  if x_a > 101 and x_a < 144 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "e" 
        elseif bloq_mayus == 2 then escribe = escribe .. "E"
        else                        escribe = escribe .. "3" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "d" 
        elseif bloq_mayus == 2 then escribe = escribe .. "D"
        else                        escribe = escribe .. "&" end end
     if y_a > 197 and y_a < 264 then
        if     bloq_mayus == 1 then escribe = escribe .. "x" 
        elseif bloq_mayus == 2 then escribe = escribe .. "X"
        else                        escribe = escribe .. "." end end end
  if x_a > 147 and x_a < 191 then 
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "r" 
        elseif bloq_mayus == 2 then escribe = escribe .. "R"
        else                        escribe = escribe .. "4" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "f" 
        elseif bloq_mayus == 2 then escribe = escribe .. "F"
        else                        escribe = escribe .. '"' end end
     if y_a > 197 and y_a < 264 then
        if     bloq_mayus == 1 then escribe = escribe .. "c" 
        elseif bloq_mayus == 2 then escribe = escribe .. "C"
        else                        escribe = escribe .. ";" end end end
  if x_a > 194 and x_a < 237 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "t" 
        elseif bloq_mayus == 2 then escribe = escribe .. "T"
        else                        escribe = escribe .. "5" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "g" 
        elseif bloq_mayus == 2 then escribe = escribe .. "G"
        else                        escribe = escribe .. "^" end end
     if y_a > 197 and y_a < 264 then
        if     bloq_mayus == 1 then escribe = escribe .. "v" 
        elseif bloq_mayus == 2 then escribe = escribe .. "V"
        else                        escribe = escribe .. ":" end end end
  if x_a > 240 and x_a < 284 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "y" 
        elseif bloq_mayus == 2 then escribe = escribe .. "Y"
        else                        escribe = escribe .. "6" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "h" 
        elseif bloq_mayus == 2 then escribe = escribe .. "H"
        else                        escribe = escribe .. ""  end end
     if y_a > 197 and y_a < 264 then
        if     bloq_mayus == 1 then escribe = escribe .. "b" 
        elseif bloq_mayus == 2 then escribe = escribe .. "B"
        else                        escribe = escribe .. "-" end end end
  if x_a > 287 and x_a < 331 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "u" 
        elseif bloq_mayus == 2 then escribe = escribe .. "U"
        else                        escribe = escribe .. "7" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "j" 
        elseif bloq_mayus == 2 then escribe = escribe .. "J"
        else                        escribe = escribe .. ""  end end
     if y_a > 197 and y_a < 264 then
        if     bloq_mayus == 1 then escribe = escribe .. "n" 
        elseif bloq_mayus == 2 then escribe = escribe .. "N"
        else                        escribe = escribe .. "_" end end end
  if x_a > 333 and x_a < 375 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "i" 
        elseif bloq_mayus == 2 then escribe = escribe .. "I"
        else                        escribe = escribe .. "8" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "k" 
        elseif bloq_mayus == 2 then escribe = escribe .. "K"
        else                        escribe = escribe .. "" end end
     if y_a > 197 and y_a < 264 then
        if     bloq_mayus == 1 then escribe = escribe .. "m" 
        elseif bloq_mayus == 2 then escribe = escribe .. "M"
        else                        escribe = escribe .. "'" end end end
  if x_a > 380 and x_a < 423 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "o" 
        elseif bloq_mayus == 2 then escribe = escribe .. "O"
        else                        escribe = escribe .. "9" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "l" 
        elseif bloq_mayus == 2 then escribe = escribe .. "L"
        else                        escribe = escribe .. ""  end end
     if y_a > 197 and y_a <264 then escribe = escribe .. " " end end
  if x_a > 425 and x_a < 470 then
     if y_a > 59 and y_a < 126 then
        if     bloq_mayus == 1 then escribe = escribe .. "p" 
        elseif bloq_mayus == 2 then escribe = escribe .. "P"
        else                        escribe = escribe .. "0" end end
     if y_a > 129 and y_a < 194 then
        if     bloq_mayus == 1 then escribe = escribe .. "n" 
        elseif bloq_mayus == 2 then escribe = escribe .. "N"
        else                        escribe = escribe .. ""  end end
     if y_a > 197 and y_a <264 then menu_teclado = false end end
  ------------------------------------------------------------------
  ------------------------------------------------------------------
    if string.len(escribe) >= LIMITE then
       local quita = string.len(escribe) - 1
       escribe = string.sub(escribe,1,quita)
    end
    screen:blit(0,0,teclas)
    if     bloq_mayus == 1 then
         screen:blit(0,0,minusculas)
    elseif bloq_mayus == 2 then
           screen:blit(0,0,mayusculas)
    else 
           screen:blit(0,0,numeros)
    end
           screen:blit(x_t,y_t,cur_tecla)
    screen:print(65,28, escribe, negro_t)
    n_marca = string.len(escribe)
    marca   = string.sub(marca_linea,1,n_marca)
    screen:print(65,36, marca, negro_t)  
    screen.waitVblankStart()
    screen.flip()
  end
  return escribe
end
--
--
---------------------------------------------------------------------
-- FIN TELCADO PSP --------------------------------------------------
-- PROGRAMADO POR PIPAGERARDO ---------------------------------------
---------------------------------------------------------------------